/**
 * Ingenius-Group S.A.S
 *
 * Project: SAU
 * File: CoreService.java
 * Date: 28/02/2011
 */

package com.ingenius.sau.client.service;

import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.ingenius.sau.shared.model.core.Factor2Evaluate;
import com.ingenius.sau.shared.model.core.Feature2Evaluate;
import com.ingenius.sau.shared.model.core.Indicator2Evaluate;
import com.ingenius.sau.shared.model.core.Scale;
import com.ingenius.sau.shared.model.core.SelfEvaluation;
import com.ingenius.sau.shared.model.guidelines.Guideline;
import com.ingenius.sau.shared.model.instruments.AssignedInstrument;
import com.ingenius.sau.shared.model.instruments.Document;
import com.ingenius.sau.shared.model.instruments.Question;
import com.ingenius.sau.shared.model.programs.AcademicProgram;
import com.ingenius.sau.shared.model.users.Group;
import com.ingenius.sau.shared.util.filter.Filter;

/**
 * Class <strong>CoreService</strong>
 * 
 * @author Jesus David
 * @version 0.1
 */
@RemoteServiceRelativePath("coreService")
public interface CoreService extends RemoteService {

	public Boolean saveOrUpdateAcademicProgram(AcademicProgram program);

	public Boolean deleteAcademicProgram(String id);

	public AcademicProgram getAcademicProgram(String id);

	public PagingLoadResult<AcademicProgram> findAcademicPrograms(
			List<Filter> filters, BasePagingLoadConfig config);

	public Boolean saveOrUpdateSelfEvaluation(SelfEvaluation evaluation);

	public Boolean deleteSelfEvaluation(String id);

	public SelfEvaluation getSelfEvaluation(String id);

	public PagingLoadResult<SelfEvaluation> findSelfEvaluations(
			List<Filter> filters, BasePagingLoadConfig config);

	public Boolean saveOrUpdateFactor2Evaluate(Factor2Evaluate factor2Evaluate);

	public Boolean deleteFactor2Evaluate(String id);

	public Factor2Evaluate getFactor2Evaluate(String id);

	public PagingLoadResult<Factor2Evaluate> findFactors2Evaluate(
			List<Filter> filters, BasePagingLoadConfig config);

	public Boolean saveOrUpdateFeature2Evaluate(
			Feature2Evaluate feature2Evaluate);

	public Boolean deleteFeature2Evaluate(String id);

	public Feature2Evaluate getFeature2Evaluate(String id);

	public PagingLoadResult<Feature2Evaluate> findFeatures2Evaluate(
			List<Filter> filters, BasePagingLoadConfig config);

	public Boolean saveOrUpdateIndicator2Evaluate(
			Indicator2Evaluate indicator2Evaluate);

	public Boolean deleteIndicator2Evaluate(String id);

	public Indicator2Evaluate getIndicator2Evaluate(String id);

	public PagingLoadResult<Indicator2Evaluate> findIndicators2Evaluate(
			List<Filter> filters, BasePagingLoadConfig config);

	public Boolean saveOrUpdateAssignedInstrument(
			AssignedInstrument assignedInstrument);

	public Boolean deleteAssignedInstrument(String id);

	public AssignedInstrument getAssignedInstrument(String id);

	public PagingLoadResult<AssignedInstrument> findAssignedInstruments(
			List<Filter> filters, BasePagingLoadConfig config);

	public List<Guideline> loadAllGuidelines();

	public List<AcademicProgram> loadAllPrograms();

	public List<Scale> loadAllScales();

	public List<Group> loadAllGroups();

	public List<Document> loadAllDocs();

	public List<Question> loadAllQuestions();

	public Scale getSelfEvaluationScale(String processId);

}
